//
// Created by A on 2024/6/23.
//

#ifndef GAME_MAP_H
#define GAME_MAP_H
#include <cstdio>
#include "spirit.h"


typedef enum {
    map_grass_key=1,
    map_road_key,
    map_water_key,
    map_Lotusleaf_key,
    map_grassroad_key
}Map_key;



typedef struct {
     int w;             //地图总宽
     int h;             //地图总高
     int def_x;         //默认加载偏移位置x
     int def_y;         //默认加载偏移位置y
}Map_head;




typedef struct  {
    Map_key key;
    char filepatch[128];
    Spirit_Rect CroppRect;
    int (*Mspirit_init)(Mspirit *,char *,Spirit_Rect,Spirit_Rect);
}Map_init;//地图资源对应表



/**
 *@brief
 * 初始化地图相关资源
 * */
int map_init();
/**
 * @brief 加载地图数据
 * */
void* map_load(char *filepath);

/**
 * @brief 一次渲染地图精灵链表
 * @param pnode 要渲染的链表
 * @return 链表中的精灵个数
 * */
int Mmap_Linkrun(LNode* pnode);
/**
 * 设置地图链表头节点指针
 *@return 0 设置成功 -1 设置失败
 * */
int map_set_linkhandle(LNode *handle);

/**
 *获取当前地图的链表头节点
 *
 * */
LNode *map_get_linkhandle(void);













#endif //GAME_MAP_H
